package com.omesoft.hksnore.util.dao;

import android.util.SparseArray;

import com.omesoft.hksnore.util.entity.Medix_Pub_Sync_Sleep;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Omesoft on 2017/3/13.
 */

public interface MendaleSleepAllIfc {
    void insertorupdate(Medix_Pub_Sync_Sleep dto);

    void insertorupdate(List<Medix_Pub_Sync_Sleep> dtos);

    void update(int state, String ID, String RecordDate, int memberID);

    Medix_Pub_Sync_Sleep findID(int postion, int memberID);

    // 查询记录条数
    int findTotal(int MemberID);

    // 累计在床时间
    int AllInBed(int MemberID);

    // 往数据库插入
    // InBedTime int 在床时间，单位：分钟
    // SleepTime int 睡眠时间，单位：分钟
    // DeepSleepTime int 深睡时间，单位：分钟
    // SleepScore int 睡眠评估分数
    // updateTime String 更新时间

    void updateTime(String ID, int InBedTime, int SleepTime, int DeepSleepTime, int SleepScore, int memberID);

    /**
     * 写给睡眠历史列表 查选 时间使用 查出来的时候格式 是 2014-02
     */
    ArrayList<Medix_Pub_Sync_Sleep> findDateTime(int memberID);

    /**
     * 按月查找 睡眠数据
     */
    ArrayList<Medix_Pub_Sync_Sleep> findMonthSleep(String Time, int memberID);

    /**
     * 根据睡眠ID查找数据
     */
    Medix_Pub_Sync_Sleep findByID(String ID, int memberID);

    // 根据ID删除数据
    void deleteByID(String ID, int memberID, String updateTime);

    //用于退出登陆时删除某个用户得信息
    void deleteAllByID(int memberID);



    /**
     * 根据时间查找该睡眠记录在数据库中的位置
     */
    int findPostionByTime(String Time, int memberID);

    /**
     * 写给睡眠 根据时间戳，查选 所有记录
     */
    ArrayList<Medix_Pub_Sync_Sleep> findSleepByMemberId(int memberID, String timestamp);

    /**
     * 写给睡眠 根据memberID，查选记录
     */
    ArrayList<Medix_Pub_Sync_Sleep> findSleepByMemberId(int memberID);

    /**
     * 这个是根据表中的某个字段判断是否已经上传给QQ健康 <br>
     * 如果未上传，就把它找出来
     *
     * @param memberID
     * @return
     */
    ArrayList<Medix_Pub_Sync_Sleep> findByQQHealth(int memberID);

    /**
     * 更新睡眠数据是否已上传至QQ健康的状态值
     *
     * @param memberId
     * @param sleepId
     */
    void updateQQHealth(int memberId, String sleepId, int qqHealth);

    /**
     * 根据时间排序查找sleepid和起始时间
     *
     * @param memberId
     * @return
     */
    ArrayList<Medix_Pub_Sync_Sleep> findSleepIDAndStartDate(int memberId);

    SparseArray<Boolean> findDayByMonth(int memberID, String month);

    ArrayList<Medix_Pub_Sync_Sleep> findDateTimeASC(int memberID);

    /**
     * 查找最新的一条数据的sleepid
     *
     * @param memberID
     * @return
     */
    String findNewestSleepID(int memberID);

    String findNewestSleepIDByDate(int memberID, String Date);

    void updateTurnCount(String ID, int memberID, int turnCount);

    void updateSnore(String sleepID, int memberID, int snoreTime, int snoreCount, int snoreFrequency,
                     int snore2AllActCount, int snore2AllTurnCount);



    ArrayList<Medix_Pub_Sync_Sleep> findByDateAndMemberId(String date, int memberID);


    // 累计翻身次数
    int AllTurnCount(int MemberID, String sleepId);
}
